<!DOCTYPE html>
<html lang="en-us">
  <head>

    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    
<meta charset="UTF-8">
<title>_source field | Elasticsearch Guide [7.7] | Elastic</title>
<link rel="home" href="index.html" title="Elasticsearch Guide [7.7]">
<link rel="up" href="mapping-fields.html" title="Meta-Fields">
<link rel="prev" href="mapping-routing-field.html" title="_routing field">
<link rel="next" href="mapping-type-field.html" title="_type field">
<meta name="DC.type" content="Learn/Docs/Elasticsearch/Reference/7.7">
<meta name="DC.subject" content="Elasticsearch">
<meta name="DC.identifier" content="7.7">
<meta name="robots" content="noindex,nofollow">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script src="https://cdn.optimizely.com/js/18132920325.js"></script>
    <link rel="apple-touch-icon" sizes="57x57" href="/apple-icon-57x57.png">
    <link rel="apple-touch-icon" sizes="60x60" href="/apple-icon-60x60.png">
    <link rel="apple-touch-icon" sizes="72x72" href="/apple-icon-72x72.png">
    <link rel="apple-touch-icon" sizes="76x76" href="/apple-icon-76x76.png">
    <link rel="apple-touch-icon" sizes="114x114" href="/apple-icon-114x114.png">
    <link rel="apple-touch-icon" sizes="120x120" href="/apple-icon-120x120.png">
    <link rel="apple-touch-icon" sizes="144x144" href="/apple-icon-144x144.png">
    <link rel="apple-touch-icon" sizes="152x152" href="/apple-icon-152x152.png">
    <link rel="apple-touch-icon" sizes="180x180" href="/apple-icon-180x180.png">
    <link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32">
    <link rel="icon" type="image/png" href="/android-chrome-192x192.png" sizes="192x192">
    <link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="96x96">
    <link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16">
    <link rel="manifest" href="/manifest.json">
    <meta name="apple-mobile-web-app-title" content="Elastic">
    <meta name="application-name" content="Elastic">
    <meta name="msapplication-TileColor" content="#ffffff">
    <meta name="msapplication-TileImage" content="/mstile-144x144.png">
    <meta name="theme-color" content="#ffffff">
    <meta name="naver-site-verification" content="936882c1853b701b3cef3721758d80535413dbfd">
    <meta name="yandex-verification" content="d8a47e95d0972434">
    <meta name="localized" content="true">
    <meta name="st:robots" content="follow,index">
    <meta property="og:image" content="https://www.elastic.co/static/images/elastic-logo-200.png">
    <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
    <link rel="icon" href="/favicon.ico" type="image/x-icon">
    <link rel="apple-touch-icon-precomposed" sizes="64x64" href="/favicon_64x64_16bit.png">
    <link rel="apple-touch-icon-precomposed" sizes="32x32" href="/favicon_32x32.png">
    <link rel="apple-touch-icon-precomposed" sizes="16x16" href="/favicon_16x16.png">
    <!-- Give IE8 a fighting chance -->
    <!--[if lt IE 9]>
    <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
    <link rel="stylesheet" type="text/css" href="/guide/static/styles.css">
  </head>

  <!--© 2015-2021 Elasticsearch B.V. Copying, publishing and/or distributing without written permission is strictly prohibited.-->

  <body>
    <!-- Google Tag Manager -->
    <script>dataLayer = [];</script><noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-58RLH5" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
    <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-58RLH5');</script>
    <!-- End Google Tag Manager -->

    <!-- Global site tag (gtag.js) - Google Analytics -->
    <script async src="https://www.googletagmanager.com/gtag/js?id=UA-12395217-16"></script>
    <script>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());
      gtag('config', 'UA-12395217-16');
    </script>

    <!--BEGIN QUALTRICS WEBSITE FEEDBACK SNIPPET-->
    <script type="text/javascript">
      (function(){var g=function(e,h,f,g){
      this.get=function(a){for(var a=a+"=",c=document.cookie.split(";"),b=0,e=c.length;b<e;b++){for(var d=c[b];" "==d.charAt(0);)d=d.substring(1,d.length);if(0==d.indexOf(a))return d.substring(a.length,d.length)}return null};
      this.set=function(a,c){var b="",b=new Date;b.setTime(b.getTime()+6048E5);b="; expires="+b.toGMTString();document.cookie=a+"="+c+b+"; path=/; "};
      this.check=function(){var a=this.get(f);if(a)a=a.split(":");else if(100!=e)"v"==h&&(e=Math.random()>=e/100?0:100),a=[h,e,0],this.set(f,a.join(":"));else return!0;var c=a[1];if(100==c)return!0;switch(a[0]){case "v":return!1;case "r":return c=a[2]%Math.floor(100/c),a[2]++,this.set(f,a.join(":")),!c}return!0};
      this.go=function(){if(this.check()){var a=document.createElement("script");a.type="text/javascript";a.src=g;document.body&&document.body.appendChild(a)}};
      this.start=function(){var a=this;window.addEventListener?window.addEventListener("load",function(){a.go()},!1):window.attachEvent&&window.attachEvent("onload",function(){a.go()})}};
      try{(new g(100,"r","QSI_S_ZN_emkP0oSe9Qrn7kF","https://znemkp0ose9qrn7kf-elastic.siteintercept.qualtrics.com/WRSiteInterceptEngine/?Q_ZID=ZN_emkP0oSe9Qrn7kF")).start()}catch(i){}})();
    </script><div id="ZN_emkP0oSe9Qrn7kF"><!--DO NOT REMOVE-CONTENTS PLACED HERE--></div>
    <!--END WEBSITE FEEDBACK SNIPPET-->

    <div id="elastic-nav" style="display:none;"></div>
    <script src="https://www.elastic.co/elastic-nav.js"></script>

    <!-- Subnav -->
    <div>
      <div>
        <div class="tertiary-nav d-none d-md-block">
          <div class="container">
            <div class="p-t-b-15 d-flex justify-content-between nav-container">
              <div class="breadcrum-wrapper"><span><a href="/guide/" style="font-size: 14px; font-weight: 600; color: #000;">Docs</a></span></div>
            </div>
          </div>
        </div>
      </div>
    </div>

    <div class="main-container">
      <section id="content">
        <div class="content-wrapper">

          <section id="guide" lang="en">
            <div class="container">
              <div class="row">
                <div class="col-xs-12 col-sm-8 col-md-8 guide-section">
                  <!-- start body -->
                  <div class="page_header">
<strong>IMPORTANT</strong>: No additional bug fixes or documentation updates
will be released for this version. For the latest information, see the
<a href="../current/index.html">current release documentation</a>.
</div>
<div id="content">
<div class="breadcrumbs">
<span class="breadcrumb-link"><a href="index.html">Elasticsearch Guide [7.7]</a></span>
»
<span class="breadcrumb-link"><a href="mapping.html">Mapping</a></span>
»
<span class="breadcrumb-link"><a href="mapping-fields.html">Meta-Fields</a></span>
»
<span class="breadcrumb-node"><code class="literal">_source</code> field</span>
</div>
<div class="navheader">
<span class="prev">
<a href="mapping-routing-field.html">« <code class="literal">_routing</code> field</a>
</span>
<span class="next">
<a href="mapping-type-field.html"><code class="literal">_type</code> field »</a>
</span>
</div>
<div class="section">
<div class="titlepage"><div><div>
<h2 class="title">
<a id="mapping-source-field"></a><code class="literal">_source</code> field<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/mapping/fields/source-field.asciidoc">edit</a>
</h2>
</div></div></div>
<p>The <code class="literal">_source</code> field contains the original JSON document body that was passed
at index time.  The <code class="literal">_source</code> field itself is not indexed (and thus is not
searchable), but it is stored so that it can be returned when executing
<em>fetch</em> requests, like <a class="xref" href="docs-get.html" title="Get API">get</a> or <a class="xref" href="search-search.html" title="Search API">search</a>.</p>
<div class="section">
<div class="titlepage"><div><div>
<h3 class="title">
<a id="disable-source-field"></a>Disabling the <code class="literal">_source</code> field<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/mapping/fields/source-field.asciidoc">edit</a>
</h3>
</div></div></div>
<p>Though very handy to have around, the source field does incur storage overhead
within the index. For this reason, it can be disabled as follows:</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">PUT tweets
{
  "mappings": {
    "_source": {
      "enabled": false
    }
  }
}</pre>
</div>
<div class="console_widget" data-snippet="snippets/739.console"></div>
<div class="warning admon">
<div class="icon"></div>
<div class="admon_content">
<h3>Think before disabling the <code class="literal">_source</code> field</h3>
<p>Users often disable the <code class="literal">_source</code> field without thinking about the
consequences, and then live to regret it.  If the <code class="literal">_source</code> field isn’t
available then a number of features are not supported:</p>
<div class="ulist itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
The <a class="xref" href="docs-update.html" title="Update API"><code class="literal">update</code></a>, <a class="xref" href="docs-update-by-query.html" title="Update by query API"><code class="literal">update_by_query</code></a>,
and <a class="xref" href="docs-reindex.html" title="Reindex API"><code class="literal">reindex</code></a> APIs.
</li>
<li class="listitem">
On the fly <a class="xref" href="search-request-body.html#request-body-search-highlighting" title="Highlighting">highlighting</a>.
</li>
<li class="listitem">
The ability to reindex from one Elasticsearch index to another, either
to change mappings or analysis, or to upgrade an index to a new major
version.
</li>
<li class="listitem">
The ability to debug queries or aggregations by viewing the original
document used at index time.
</li>
<li class="listitem">
Potentially in the future, the ability to repair index corruption
automatically.
</li>
</ul>
</div>
</div>
</div>
<div class="tip admon">
<div class="icon"></div>
<div class="admon_content">
<p>If disk space is a concern, rather increase the
<a class="xref" href="index-modules.html#index-codec">compression level</a> instead of disabling the <code class="literal">_source</code>.</p>
</div>
</div>
<div class="sidebar">
<div class="titlepage"><div><div>
<p class="title"><strong>The metrics use case</strong></p>
</div></div></div>
<p>The <em>metrics</em> use case is distinct from other time-based or logging use cases
in that there are many small documents which consist only of numbers, dates,
or keywords.  There are no updates, no highlighting requests, and the data
ages quickly so there is no need to reindex.  Search requests typically use
simple queries to filter the dataset by date or tags, and the results are
returned as aggregations.</p>
<p>In this case, disabling the <code class="literal">_source</code> field will save space and reduce I/O.</p>
</div>
</div>

<div class="section">
<div class="titlepage"><div><div>
<h3 class="title">
<a id="include-exclude"></a>Including / Excluding fields from <code class="literal">_source</code><a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/mapping/fields/source-field.asciidoc">edit</a>
</h3>
</div></div></div>
<p>An expert-only feature is the ability to prune the contents of the <code class="literal">_source</code>
field after the document has been indexed, but before the <code class="literal">_source</code> field is
stored.</p>
<div class="warning admon">
<div class="icon"></div>
<div class="admon_content">
<p>Removing fields from the <code class="literal">_source</code> has similar downsides to disabling
<code class="literal">_source</code>, especially the fact that you cannot reindex documents from one
Elasticsearch index to another. Consider using
<a class="xref" href="run-a-search.html#source-filtering" title="Source filtering">source filtering</a> instead.</p>
</div>
</div>
<p>The <code class="literal">includes</code>/<code class="literal">excludes</code> parameters (which also accept wildcards) can be used
as follows:</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">PUT logs
{
  "mappings": {
    "_source": {
      "includes": [
        "*.count",
        "meta.*"
      ],
      "excludes": [
        "meta.description",
        "meta.other.*"
      ]
    }
  }
}

PUT logs/_doc/1
{
  "requests": {
    "count": 10,
    "foo": "bar" <a id="CO330-1"></a><i class="conum" data-value="1"></i>
  },
  "meta": {
    "name": "Some metric",
    "description": "Some metric description", <a id="CO330-2"></a><i class="conum" data-value="1"></i>
    "other": {
      "foo": "one", <a id="CO330-3"></a><i class="conum" data-value="1"></i>
      "baz": "two" <a id="CO330-4"></a><i class="conum" data-value="1"></i>
    }
  }
}

GET logs/_search
{
  "query": {
    "match": {
      "meta.other.foo": "one" <a id="CO330-5"></a><i class="conum" data-value="2"></i>
    }
  }
}</pre>
</div>
<div class="console_widget" data-snippet="snippets/740.console"></div>
<div class="calloutlist">
<table border="0" summary="Callout list">
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO330-1"><i class="conum" data-value="1"></i></a><a href="#CO330-2"></a><a href="#CO330-3"></a><a href="#CO330-4"></a></p>
</td>
<td align="left" valign="top">
<p>These fields will be removed from the stored <code class="literal">_source</code> field.</p>
</td>
</tr>
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO330-5"><i class="conum" data-value="2"></i></a></p>
</td>
<td align="left" valign="top">
<p>We can still search on this field, even though it is not in the stored <code class="literal">_source</code>.</p>
</td>
</tr>
</table>
</div>
</div>

</div>
<div class="navfooter">
<span class="prev">
<a href="mapping-routing-field.html">« <code class="literal">_routing</code> field</a>
</span>
<span class="next">
<a href="mapping-type-field.html"><code class="literal">_type</code> field »</a>
</span>
</div>
</div>

                  <!-- end body -->
                </div>
                <div class="col-xs-12 col-sm-4 col-md-4" id="right_col">
                  <div id="rtpcontainer" style="display: block;">
                    <div class="mktg-promo">
                      <h3>Most Popular</h3>
                      <ul class="icons">
                        <li class="icon-elasticsearch-white"><a href="https://www.elastic.co/webinars/getting-started-elasticsearch?baymax=default&amp;elektra=docs&amp;storm=top-video">Get Started with Elasticsearch: Video</a></li>
                        <li class="icon-kibana-white"><a href="https://www.elastic.co/webinars/getting-started-kibana?baymax=default&amp;elektra=docs&amp;storm=top-video">Intro to Kibana: Video</a></li>
                        <li class="icon-logstash-white"><a href="https://www.elastic.co/webinars/introduction-elk-stack?baymax=default&amp;elektra=docs&amp;storm=top-video">ELK for Logs &amp; Metrics: Video</a></li>
                      </ul>
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </section>

        </div>


<div id="elastic-footer"></div>
<script src="https://www.elastic.co/elastic-footer.js"></script>
<!-- Footer Section end-->

      </section>
    </div>

<script src="/guide/static/jquery.js"></script>
<script type="text/javascript" src="/guide/static/docs.js"></script>
<script type="text/javascript">
  window.initial_state = {}</script>
  </body>
</html>
